package com.yzkj.cpjxc.business.service;

import com.yzkj.cpjxc.business.domain.SysDept;
import com.yzkj.cpjxc.business.domain.SysDeptShowVo;
import com.yzkj.cpjxc.business.domain.ZTreeComm;
import com.yzkj.cpjxc.business.framework.common.BusinessMap;
import com.yzkj.cpjxc.business.framework.common.Pager;

import java.util.List;

/**
 * 部门管理 Service 接口
 */
public interface SysDeptService {

	/**
	 * 获取查询分页对象
	 * @creator: shenghe.he
	 * @modifier:
	 * @modifiedDate:
	 * @param pager
	 * @param sysDept
	 * @return
	 * @throws Exception
	 */
	public Pager<SysDeptShowVo> search(Pager<SysDeptShowVo> pager, SysDept sysDept) throws Exception;

	/**
	 * 新增部门管理
	 * @creator: shenghe.he
	 * @modifier:
	 * @modifiedDate:
	 * @param sysDept
	 * @return
	 * @throws Exception
	 */
	public BusinessMap create(SysDept sysDept) throws Exception;

	/**
	 * 判断是否存在
	 * @creator: shenghe.he
	 * @modifier:
	 * @modifiedDate:
	 * @param sysDept 部门管理
	 * @return
	 * @throws Exception
	 */
	public boolean isExists(SysDept sysDept) throws Exception;

	/**
	 * 根据ID获取部门管理
	 * @creator: shenghe.he
	 * @modifier:
	 * @modifiedDate:
	 * @param sysDeptId
	 * @return
	 * @throws Exception
	 */
	public SysDeptShowVo getById(String sysDeptId) throws Exception;

	/**
	 * 编辑部门管理
	 * @creator: shenghe.he
	 * @modifier:
	 * @modifiedDate:
	 * @param sysDept 部门管理
	 * @return
	 * @throws Exception
	 */
	public BusinessMap edit(SysDept sysDept) throws Exception;

	/**
	 * @description: 查询部门树列表
	 * @modifier:
	 * @modifiedDate:
	 * @param id
	 * @return
	 */
	public List<ZTreeComm> queryRootDeptTreeList(String id) throws Exception;

	/**
	 * @description: 是否是父节点
	 * @modifier:
	 * @modifiedDate:
	 * @param id
	 * @return
	 */
	public boolean isParent(String id) throws Exception;

	/**
	 * @description: 获取顶级部门信息
	 * @modifier:
	 * @modifiedDate:
	 * @return
	 * @throws Exception
	 */
	public SysDept getTopLevelDept() throws Exception;

	/**
	 * @description: 假删除部门信息
	 * @modifier:
	 * @modifiedDate:
	 * @param deptId
	 * @return
	 * @throws Exception
	 */
	public boolean delete(String deptId) throws Exception;

	/**
	 * @description: 获取指定部门的下级部门列表
	 * @modifiedDate:
	 * @param parentDeptId
	 * @return
	 * @throws Exception
	 */
	public List<SysDeptShowVo> getChlidDeptList(String parentDeptId) throws Exception;

	/**
	 * @description: 通过用户ID获取用户关联的部门信息
	 * @modifier:
	 * @modifiedDate:
	 * @param userId
	 * @return
	 */
	public List<SysDeptShowVo> getDeptByUserId(String userId) throws Exception;

	/**
	 * @description: 初始化顶级部门
	 * @modifier:
	 * @modifiedDate:
	 */
	public void initData() throws Exception;

}
